<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    
    <meta name="Generator" content="iWeb 2.0.3" />
    <meta name="iWeb-Build" content="local-build-20080624" />
    <meta name="viewport" content="width=700" />
    <title>Toryt</title>
    <link rel="stylesheet" type="text/css" media="screen,print" href="Home_files/Home.css" />
    <!--[if IE]><link rel='stylesheet' type='text/css' media='screen,print' href='Home_files/HomeIE.css'/><![endif]-->
    <script type="text/javascript" src="Scripts/iWebSite.js"></script>
    <script type="text/javascript" src="Scripts/Widgets/SharedResources/WidgetCommon.js"></script>
    <script type="text/javascript" src="Scripts/Widgets/Navbar/navbar.js"></script>
    <script type="text/javascript" src="Home_files/Home.js"></script>
  </head>
  <body style="background: #ffffff; margin: 0pt; " onload="onPageLoad();" onunload="onPageUnload();">
    <div style="text-align: center; ">
      <div style="margin-bottom: 0px; margin-left: auto; margin-right: auto; margin-top: 0px; overflow: hidden; position: relative; word-wrap: break-word;  background: #ffffff; text-align: left; width: 700px; " id="body_content">
        <div style="margin-left: 0px; position: relative; width: 700px; z-index: 0; " id="nav_layer">
          <div style="height: 0px; line-height: 0px; " class="bumper"> </div>
          <div class="com-apple-iweb-widget-navbar flowDefining" id="widget0" style="margin-left: 35px; margin-top: 0px; position: relative; width: 630px; z-index: 1; ">
    
            <div id="widget0-navbar" class="navbar">

      
              <div id="widget0-bg" class="navbar-bg">

        
                <ul id="widget0-navbar-list" class="navbar-list">
 <li></li> 
</ul>
                
      
</div>
              
    
</div>
          </div>
          <script type="text/javascript"><!--//--><![CDATA[//><!--
new NavBar('widget0', 'Scripts/Widgets/Navbar', 'Scripts/Widgets/SharedResources', '.', {"current-page-GUID": "7AE0BD50-67D7-4AEB-AA50-A0ECB802DE3C", "path-to-root": "", "dotMacAccount": "jandockx", "isCollectionPage": "NO", "useStaticFeed": true, "navbar-css": ".navbar {\n\tfont-family: Arial, sans-serif;\n\tfont-size: 1em;\n\tcolor: #666;\n\tmargin: 9px 0px 6px 0px;\n\tline-height: 30px;\n}\n\n.navbar-bg {\n\ttext-align: center;\n}\n\n.navbar-bg ul {\n\tlist-style: none;\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n\nli {\n\tlist-style-type: none;\n\tdisplay: inline;\n\tpadding: 0px 10px 0px 10px;\n}\n\n\nli a {\n\ttext-decoration: none;\n\tcolor: #666;\n}\n\nli a:visited {\n\ttext-decoration: none;\n\tcolor: #666;\n}\n\nli a:hover\r{\r\n \tcolor: #463C3C;\n\ttext-decoration: none;\r}\n\n\nli.current-page a\r{\r\t color: #463C3C;\n\ttext-decoration: none;\n\tfont-weight: bold;\r\r}"});
//--><!]]></script>
          <div style="clear: both; height: 0px; line-height: 0px; " class="spacer"> </div>
        </div>
        <div style="height: 73px; margin-left: 0px; position: relative; width: 700px; z-index: 10; " id="header_layer">
          <div style="height: 0px; line-height: 0px; " class="bumper"> </div>
          <div id="id1" style="height: 50px; left: 35px; position: absolute; top: 23px; width: 630px; z-index: 1; " class="style_SkipStroke">
            <div class="text-content style_External_630_50" style="padding: 0px; ">
              <div class="style">
                <p style="padding-bottom: 0pt; padding-top: 0pt; " class="Header">Toryt</p>
              </div>
            </div>
          </div>
          


          <div style="height: 1px; width: 630px;  height: 0px; left: 35px; position: absolute; top: 3px; width: 630px; z-index: 1; " class="tinyText">
            <div style="position: relative; width: 630px; ">
              <img src="Home_files/shapeimage_1.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 630px; " />
            </div>
          </div>
        </div>
        <div style="margin-left: 0px; position: relative; width: 700px; z-index: 5; " id="body_layer">
          <div style="height: 0px; line-height: 0px; " class="bumper"> </div>
          <div style="height: 143px; width: 174px;  height: 143px; left: 263px; position: absolute; top: 4px; width: 174px; z-index: 1; " class="tinyText style_SkipStroke_1">
            <img src="Home_files/toryt174x143.jpg" alt="" style="border: none; height: 143px; width: 174px; " />
          </div>
          <div style="height: 1px; line-height: 1px; " class="tinyText"> </div>
          <div style="margin-left: 35px; margin-top: 154px; position: relative; width: 630px; z-index: 1; " class="style_SkipStroke_2 flowDefining">
            <div class="text-content style_External_630_54" style="padding: 0px; ">
              <div class="style">
                <p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style">Toryt is a long work in progress. From 2 different perspectives, I’m trying to create a zero-effort Java testing tool, with near-complete coverage.</p>
              </div>
              <div style="height: 5px; line-height: 5px; " class="tinyText"> </div>
            </div>
          </div>
          


          <div id="id2" style="height: 32px; left: 35px; position: absolute; top: 130px; width: 630px; z-index: 1; " class="style_SkipStroke_3">
            <div class="text-content graphic_shape_layout_style_default_External_630_32" style="padding: 0px; ">
              <div class="graphic_shape_layout_style_default">
                <p style="padding-bottom: 0pt; padding-top: 0pt; " class="Title">About</p>
              </div>
            </div>
          </div>
          


          <div id="id3" style="height: 100px; left: 300px; position: absolute; top: 345px; width: 100px; z-index: 1; " class="style_SkipStroke_4">
            <div class="text-content graphic_textbox_layout_style_default_External_100_100" style="padding: 0px; ">
              <div class="graphic_textbox_layout_style_default"></div>
            </div>
          </div>
          


          <div id="id4" style="height: 500px; left: 35px; position: absolute; top: 217px; width: 300px; z-index: 1; " class="style_SkipStroke_4">
            <div class="text-content graphic_textbox_layout_style_default_External_300_500" style="padding: 0px; ">
              <div class="graphic_textbox_layout_style_default">
                <p style="padding-top: 0pt; " class="paragraph_style_1">I love formal design-by-contract. I cannot develop software without applying formal design-by-contract. Whenever I am writing code, design-by-contract is with me. And it pays. By applying formal design-by-contract, we get the most stable software possible. I studied formal design-by-contract, researched it, taught it academically. Then I applied it over 5 year with our team in production, with excellent results, and taught it commercially. Every time the experience is the same: after 3 to 5 days, people with previous development production experience feel the enormous benefits, and are turned over.<br /></p>
                <p class="paragraph_style_1">We develop writing code and type contracts interactively, and it is clear that the combination of mindsets is extremely beneficial. Discoveries in code ameliorate the contract. Insights in the declarative contract guide the design of the code, and lead to good algorithms.<br /></p>
                <p class="paragraph_style_1"><br /></p>
                <p class="paragraph_style_1">Yet, even the most involved contract-based coding experience cannot guarantee correctness in practice. Unit testing is still needed. From my point of view, unit testing is a drag. It is putting the declarative contract back into code, writing more or less the same expressions again.<br /></p>
                <p class="paragraph_style_1"><br /></p>
                <p style="padding-bottom: 0pt; " class="paragraph_style_1">Since we have written the expressions in the contract already, wouldn’t it be nice if our test code would simply use those expressions to validate the correctness of the implementation? In essence, a unit test is simply preparing the test case context, calling the method under test, and validating the postconditions and invariants afterwards. This “protocol” is generic. The postconditions and invariants are boolean expressions already encoded in the contract. What is left is only the test case context ... if we could automate creating the test case, formal contracts would result in complete unit tests with zero-effort ...</p>
              </div>
            </div>
          </div>
          


          <div id="id5" style="height: 500px; left: 365px; position: absolute; top: 217px; width: 300px; z-index: 1; " class="style_SkipStroke_4">
            <div class="text-content graphic_textbox_layout_style_default_External_300_500" style="padding: 0px; ">
              <div class="graphic_textbox_layout_style_default">
                <p style="padding-top: 0pt; " class="paragraph_style_1">I love unit testing. With unit testing, and IoC, as soon as I have written some code, I can immediately see it running. It keeps me going.<br /></p>
                <p class="paragraph_style_1"><br /></p>
                <p class="paragraph_style_1">Apart from the immediate satisfaction it offers, unit testing is a conditio sine qua non for agile development. Agile development means that your software is in flux from the very early start. With agile development, we admit that the nature of software is change, and in accepting that, we leverage the dynamic nature of the asset, administering development techniques known to work in the small to the earliest and most difficult phases of the evolution a software package: its birth.<br /></p>
                <p class="paragraph_style_1">Yet, we know from experience that the tricks and tools of the trade are needed to keep the inborn dynamic nature of software under control. Unit testing is such a tool. We know that when code evolves, even the most simple algorithm three levels down may break. Having near complete code coverage with unit tests gives us the audacity to go ahead with even complex refactorings, when we believe it will benefit the quality of our code base. Our unit tests will guide us to cover all consequences of our refactoring, automagically, and guard us against short-sighted changes.<br /></p>
                <p class="paragraph_style_1"><br /></p>
                <p style="padding-bottom: 0pt; " class="paragraph_style_1">But what should we test? What are the rules to which this method should answer, now, but also in 10 years? How do we find out what we should test, and what not? And which test cases should we use? What conditions are relevant for this method, now, but also in 10 years? And wouldn’t it be nice if we didn’t have to bother with all that test infrastructure, which is so time consuming to set up? And what if our unit tests could be exploited with zero-effort to also communicate the exact intention and accepted usage of our methods to our users?</p>
              </div>
            </div>
          </div>
          


          <div id="id6" style="height: 68px; left: 35px; position: absolute; top: 722px; width: 630px; z-index: 1; " class="style_SkipStroke_2">
            <div class="text-content style_External_630_68" style="padding: 0px; ">
              <div class="style">
                <p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style">Toryt I was a first attempt, which we used in practice in over 10 projects with success, but too complex to continue. Toryt II should deliver on the promises, and is under development. Parts are finished and used in live projects.</p>
              </div>
            </div>
          </div>
          


          <div id="id7" style="height: 25px; left: 35px; position: absolute; top: 794px; width: 630px; z-index: 1; " class="style_SkipStroke_2">
            <div class="text-content style_External_630_25" style="padding: 0px; ">
              <div class="style">
                <p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_2">© Jan Dockx, 2004</p>
              </div>
            </div>
          </div>
          <div style="height: 610px; line-height: 610px; " class="spacer"> </div>
        </div>
        <div style="height: 150px; margin-left: 0px; position: relative; width: 700px; z-index: 15; " id="footer_layer">
          <div style="height: 0px; line-height: 0px; " class="bumper"> </div>
        </div>
      </div>
    </div>
  </body>
</html>


